﻿Imports System
Imports System.Configuration
Imports System.Transactions
Imports System.Text
Imports System.Net.Mail
Imports System.Security.Cryptography
Imports System.Web
Imports CGR.SEGUR.BE
Imports Owasp.Esapi

Imports CGR.SEGUR.UTIL

Public Class EMailBL

    ''' <summary>
    ''' El Usuario Solicita generar una nueva clave
    ''' </summary>
    ''' <param name="obj"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
#Region "Olvido Clave, Enviar Credenciales"

    Public Function UsuarioSolicitarCredenciales(ByVal obj As UsuarioBE, ByVal token As String) As ResultadoBE

        Dim res As New ResultadoBE
        Dim enlace As String = obj.SegurUrl + "?id=" + HttpUtility.UrlEncode(obj.CredencialUrl)
        'Creamos el mensaje de correo electrónico
        Dim mensaje As New StringBuilder
        mensaje.AppendLine("<Html>")
        mensaje.AppendLine("<body>")
        mensaje.AppendLine("<table width='670' cellspacing='0' cellpadding='0' bordercolor='#999999' border='0'><tr>")
        mensaje.AppendLine("<td Style='background: none repeat scroll 0 0 #EAD4D5; border: 1px solid #E38D8D; color: #666666; font: 12px Arial,sans-serif; margin: 0 auto 9px; padding-bottom: 4px; padding-left: 8px; padding-top: 4px;'>")
        mensaje.AppendLine("<div align='justify'>")
        mensaje.AppendLine("<b>Sistema Integrado de Seguridad</b></div></td></tr>")
        mensaje.AppendLine("<tr	><td style='background: none repeat scroll 0 0 #FFFFFF; border: 1px solid #E38D8D; color:#666666; font: 12px Arial,sans-serif; margin: 0 auto; padding: 4px 4px 4px 8px;'>")
        mensaje.AppendLine("<span name='congresistaLabel'>")
        mensaje.AppendLine("Estimado Sr(a). " + obj.Nombres + " " + obj.Apellidos + ",</span>")
        mensaje.AppendLine("</span>")
        mensaje.AppendLine("</br></br>")
        mensaje.AppendLine("<span name='congresistaLabel'>")
        mensaje.AppendLine("Se ha generado una solicitud para restablecer su contraseña ")
        mensaje.AppendLine("y de esa manera poder acceder a los Sistemas de Información de la CGR.</span>")
        mensaje.AppendLine("</br></br>")
        mensaje.AppendLine("<span>")
        'mensaje.AppendLine("Para generar las credenciales de acceso, haga clic en siguiente enlace:")
        mensaje.AppendLine("Copia y pega este link en la barra de búsqueda de tu navegador:")
        mensaje.AppendLine("</span></br></br>")
        mensaje.AppendLine("<a target='_blank' href=")
        mensaje.AppendLine(enlace)
        mensaje.AppendLine("/>")
        mensaje.AppendLine(enlace)
        mensaje.AppendLine("</a>")
        mensaje.AppendLine("</br></br>")
        mensaje.AppendLine("Lima, " + Now)
        mensaje.AppendLine("</br></br>")
        mensaje.AppendLine("<b>Contraloria General de la República del Perú</b>")
        mensaje.AppendLine("</td>")
        mensaje.AppendLine("</tr>")
        mensaje.AppendLine("</table>")
        mensaje.AppendLine("</body>")
        mensaje.AppendLine("</Html>")

        Try
            Dim retorno As srvMensajeriaES.RespuestaBE

            retorno = EnviarEmail(obj, mensaje.ToString, token)

            res.detalle = retorno.Mensaje
            res.flag = True

        Catch ex As Exception
            sisAuditoria.GuardarEvento(sisAuditoria.EnumAuditoria.FATAL_ERROR, "Error en la función UsuarioSolicitarCredenciales", ex.Message.ToString, IIf(obj Is Nothing, "", obj.Codigo))
            res.flag = False
            res.detalle = "Error al enviar las credenciales de acceso a los correos electrónicos del usuario"

        End Try

        Return res

    End Function

    Private Function UsuarioSolicitarCredencialesBodyHtml(ByVal oContrasena As ContrasenaBE, oUsuario As UsuarioBE) As String

        Dim body As String

        body = "<Html> "
        body = body + "<body>"
        body = body + "<table width='670' cellspacing='0' cellpadding='0' bordercolor='#999999' border='0'>"
        body = body + "<tr Style='height:25px;'>"
        body = body + "<td Style='background: none repeat scroll 0 0 #EAD4D5;'"
        body = body + "border: 1px solid #E38D8D;"
        body = body + "color: #666666;"
        body = body + "font: 12px Arial,sans-serif;"
        body = body + "margin: 0 auto 9px;"
        body = body + "padding-bottom: 4px;"
        body = body + "padding-left: 8px;"
        body = body + "padding-top: 4px;>"
        body = body + "<div align='justify'>"
        body = body + "<b>Sistema de Seguridad</b>"
        body = body + "</div>"
        body = body + "</td>"
        body = body + "</tr>"

        body = body + "<tr >"
        body = body + "<td Style='height:15px;'>"
        body = body + "</td>"
        body = body + "</tr>"
        body = body + "<tr >"
        body = body + "<td style='background: none repeat scroll 0 0 #FFFFFF;'"
        body = body + "border: 1px solid #E38D8D;"
        body = body + "color: #666666;"
        body = body + "font: 11px Arial,sans-serif;"
        body = body + "margin: 0 auto;"
        body = body + "padding: 4px 4px 4px 8px;>"
        body = body + "<span name='congresistaLabel'>"
        body = body + "Estimado Sr(a). " + oUsuario.Nombres + " " + oUsuario.Apellidos
        body = body + ",</span>"
        body = body + "</br>"
        body = body + "</br>"
        body = body + "Usted podrá ingresar a los sistemas de la CGR con los siguientes datos:"
        body = body + "</br>"
        body = body + "</br>"
        body = body + "Usuario  : " + oUsuario.Codigo
        body = body + "</br>"
        body = body + "Contraseña : " + oContrasena.Clave
        body = body + "</br>"
        body = body + "</br>"
        body = body + "Lima, " + Now
        body = body + "</br>"
        body = body + "</br>"
        body = body + "<b>Contraloria General de la República del Perú</b>"
        body = body + "</td>"
        body = body + "</tr>"
        body = body + "</table>"
        body = body + "</body>"
        body = body + "</Html>"

        Return body

    End Function



#End Region

#Region "Enviar Email"

    Private Function EnviarEmail(ByVal oUsuario As UsuarioBE, ByVal body As String, ByVal token As String) As srvMensajeriaES.RespuestaBE

        Dim res As New ResultadoBE
        Try

            Using srvMensajeria As New srvMensajeriaES.MensajeriaESClient

                'Dim objRetorno As New srvMensajeriaES.DatoRetorno
                Dim objRetorno As New srvMensajeriaES.RespuestaBE
                Dim oMensajeria As New srvMensajeriaES.MensajeriaBE

                oMensajeria.Subject = "Sistema de Seguridad CGR"
                oMensajeria.FromUser = ConfigurationManager.AppSettings("fromEMAIL")
                oMensajeria.ToUser = oUsuario.EmailInstitucional
                oMensajeria.Cc = oUsuario.EmailPersonal
                oMensajeria.Body = body
                oMensajeria.IsBodyHtml = True
                objRetorno = srvMensajeria.EnviarCorreo(oMensajeria, token, oUsuario.Codigo)

                Return objRetorno
            End Using

        Catch ex As Exception
            sisAuditoria.GuardarEvento(sisAuditoria.EnumAuditoria.FATAL_ERROR, "Error en la función EnviarEmail", ex.Message.ToString, IIf(oUsuario Is Nothing, "", oUsuario.Codigo))

            res.flag = False
            res.detalle = "Error al enviar el mail a los correos electrónicos del usuario"
            Dim objRetorno As New srvMensajeriaES.RespuestaBE
            Return objRetorno

        End Try

    End Function

    Private Function EnviarEmail(ByVal oUsuario As UsuarioBE, ByVal body As String) As RespuestaMailBE

        Dim res As New ResultadoBE
        Try


            Dim objRetorno As New CGR.SEGUR.UTIL.RespuestaMailBE
            Dim oMensajeria As New CGR.SEGUR.UTIL.MensajeriaBE

            oMensajeria.Asunto = "Sistema de Seguridad CGR"
            oMensajeria.FromUser = ConfigurationManager.AppSettings("fromEMAIL")
            oMensajeria.ToUser = oUsuario.EmailInstitucional
            oMensajeria.ConCopia = oUsuario.EmailPersonal
            oMensajeria.Mensaje = body
            oMensajeria.IsBodyHtml = True

            Dim oEnviarMail = New CGR.SEGUR.UTIL.Mensajeria()
            objRetorno = oEnviarMail.EnviarCorreo(oMensajeria)

            Return objRetorno

        Catch ex As Exception
            sisAuditoria.GuardarEvento(sisAuditoria.EnumAuditoria.FATAL_ERROR, "Error en la función EnviarEmail", ex.Message.ToString, IIf(oUsuario Is Nothing, "", oUsuario.Codigo))

            res.flag = False
            res.detalle = "Error al enviar el mail a los correos electrónicos del usuario"
            Dim objRetorno As New CGR.SEGUR.UTIL.RespuestaMailBE
            Return objRetorno

        End Try

    End Function

#End Region

End Class
